The present invention relates to the field of computer graphics, and in particular to methods and apparatus for assigning attribute values to surfaces of computer graphics models. Many computer graphic images are created by mathematically modeling the interaction of light with a three dimensional scene from a given viewpoint. This process, called rendering, generates a two-dimensional image of the scene from the given viewpoint, and is analogous to taking a photograph of a real-world scene. Animated sequences can be created by rendering a sequence of images of a scene as the scene is gradually changed over time. A great deal of effort has been devoted to making realistic looking rendered images and animations.
In computer-generated animation, an object's appearance is defined by a three-dimensional computer model. To appear realistic, the computer model of an object is often extremely complex, having millions of surfaces and tens of thousands of attributes. Due to the complexity involved with animating such complex models, particularly character models with hundreds or thousands of degrees of freedom, animation tools often rely on computer graphics variables to define the attributes of objects. Examples of computer graphics variables include animation variables, shader relationships, weighting relationships, and mappings of influence between computer graphics components. Computer graphics variable functions associate input values to a corresponding output values according to some rule or mathematical expression. Computer graphics variable functions may be functions of an input time variable or any other type of input.
For example, animation variables, which are sometimes referred to as avars, are parameters used by functions to modify the position, or pose, of all or a portion of a model. Animation variables and their associated functions can specify relatively simple motions, such as the translation and rotation of objects. Animation variables and their associated functions are also used to abstract complicated modifications to a model to a relatively simple control. For example, animation variables can specify the rotation angles of the joints of a character model, thereby positioning the character model's limbs and appendages. More complicated animation variables can define the degree of opening of a character's mouth. In this example, the value of the animation variable is used to determine the position of the many different parts of the character model needed to open the characters mouth to the desired degree. The animation tools then modify the character model according to the final posed armature to create a character model with an open mouth.
Users define computer graphics images and animated sequences by specifying the values of computer graphics variables of an object, and hence the pose of an object, at one or more key frames. A pair of a computer graphics variable value and its associated input value, such as a time value, is referred to as a knot. The animation system determines the pose of an object in the frames between key frames by interpolating the values of its computer graphics variables from the knots. A variety of different interpolation schemes are used in animation, including linear, cubic, b-spline, Bezier, and Catmull-Rom. Typically, animation tools will display a line or curve, such as a spline curve, defined by one or more knots of computer graphics variable. Depending on the type of interpolation, animation tools may also allow users to adjust the slope or curvature of the interpolated computer graphics variable curve.
Precise control of the timing, values, and interpolation of computer graphics variable knots is essential to achieving artistically effective animation. Subtle adjustments in the value, timing, and interpolation of knots can greatly change the artistic impact of animation. During animation, many gestures or actions are comprised of large numbers of knots from one or more computer graphics variables acting in concert to achieve the desired motion. For example, a sequence of knots of a single computer graphics variable might define how a character's mouth opens during a sequence of dialog. In another example, a sequence of knots for multiple computer graphics variables might define a character's arm and hand movements while waving or pointing.
Because animation is often defined by large numbers of related computer graphics variable knots, manually adjusting individual computer graphics variable knots is time consuming, error-prone, and inflexible.
It is desirable for animation tools to provide an interface for simultaneously modifying large numbers of computer graphics variable knots in an intuitive and controllable manner It is also desirable for animation tools to provide similar interfaces for modifying computer graphics variable knots associated with a single computer graphics variable or with multiple computer graphics variables.